/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package conceitos.DAO;

import conceitos.modelo.entidades.Ambiente;
import conceitos.modelo.entidades.Objeto;
import conceitosgame.util.Vetor;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author jeferson
 */
public class AmbienteDAO {
        private Connection conexao;

    public AmbienteDAO() {
        conexao = Conexao.getInstance();
    }
    
    public Ambiente select(int idAmbiente) {
        
        String sql = "SELECT a.pontuacaoaluno, a.statusambiente, b.* "
                + "FROM contaambientes a JOIN ambiente b ON a.idambiente = b.idambiente	"
                + "WHERE a.idambiente = "+idAmbiente;
        try {
            Ambiente ambiente = null;
            ResultSet rs = conexao.createStatement().executeQuery(sql);
            while (rs.next()) {
                ambiente = new Ambiente();
                if (rs.isLast()) {
                    ambiente.setIdAmbiente(rs.getInt("idambiente"));
                    ambiente.setNomeAmbiente(rs.getString("nome"));
                    String temp[] = rs.getString("rotacao").split(",");
                    int xR = Integer.parseInt(temp[0]);
                    int yR = Integer.parseInt(temp[1]);
                    int zR = Integer.parseInt(temp[2]);
                    Vetor vetor = new Vetor(xR, yR, zR);
                    ambiente.setRotacao(vetor);
                    ambiente.setEscala(rs.getFloat("escala"));
                    ambiente.setDificuldade(rs.getString("dificuldade"));
                    ambiente.setObjetosRequisitados(rs.getString("objetosrequisitados"));
                    ambiente.setUrl(rs.getString("url"));
                    ambiente.setObjetosAmbiente(rs.getInt("objetosambiente"));
                    ambiente.setPontuacaoAluno(rs.getInt("pontuacaoaluno"));
                    ambiente.setStatusAmbiente(rs.getInt("statusambiente"));
                }
            }
            rs.close();
            return ambiente;
        } catch (SQLException ex) {
            ex.printStackTrace();
            JOptionPane.showMessageDialog(null, "Erro: " + ex.getMessage());
        }
        return null;
    }
    
public List<Objeto> carregarObjetos(int idAmbiente) {

        String sql = "SELECT a.posicao, a.rotacao, b.* "
                + "FROM ambienteobjetos a JOIN objeto b "
                + "ON a.idobjeto = b.idobjeto WHERE a.idambiente = "+idAmbiente;
        try {
            ResultSet rs = conexao.createStatement().executeQuery(sql);
            List<Objeto> objetos = new ArrayList<Objeto>();
            while (rs.next()) {
                Objeto objeto = new Objeto();
                objeto.setIdObjeto(rs.getInt("idobjeto"));
                objeto.setDescricao(rs.getString("descricao"));
                objeto.setUrl(rs.getString("url"));
                String rotacao[] = rs.getString("rotacao").split(",");
                String posicao[] = rs.getString("posicao").split(",");
                
                //pegar possicao
                Vetor vetorPos = new Vetor();
                vetorPos.setX(Integer.parseInt(posicao[0]));
                vetorPos.setY(Integer.parseInt(posicao[1]));
                vetorPos.setZ(Integer.parseInt(posicao[2]));
                objeto.setPosicao(vetorPos);
                
                //pegar rotacao
                Vetor vetorRot = new Vetor();
                vetorRot.setX(Integer.parseInt(rotacao[0]));
                vetorRot.setY(Integer.parseInt(rotacao[1]));
                vetorRot.setZ(Integer.parseInt(rotacao[2]));
                objeto.setRotacao(vetorRot);
                
                objetos.add(objeto);
            }
            rs.close();
            return objetos;
        } catch (SQLException ex) {
            ex.printStackTrace();
            JOptionPane.showMessageDialog(null, "Erro: " + ex.getMessage());
        }
        return null;
    }
}
